'''
1.	使用对比度拉伸的方法，
将图像均匀变量、变暗，
并对像素区间[100.150]均匀变亮，对比效果。
'''

import cv2
import matplotlib.pyplot as plt
import numpy as np

im = cv2.imread('./img.png')
img = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) # cv2.COLOR_BGR2GRAY：表示从BGR转换位灰度图像。
img1 = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
# 均匀变亮/暗
res = np.uint8(np.clip((1.5 * img + 10), 0, 255)) # clip()函数：比 0 小的变成 0，比255 大的变成 255
res1 = np.uint8(np.clip((0.5 * img - 10), 0, 255))
res2 = img1
# print(img)
for i in range(len(img)):
    for j in range(len(img[0])):
        if img[i][j] < 150 and img[i][j]>=100: # 在区间内的，提亮
            res2[i][j] = img[i][j]*1.5 + 10
res3 = np.uint8(np.clip(res2, 0, 255))

# 原图直方图
hist_full = cv2.calcHist([img], [0], None, [256], [0, 256])
plt.subplot(2,2,1)
plt.plot(hist_full)
# 均匀变亮直方图
hist_full = cv2.calcHist([res], [0], None, [256], [0, 256])
plt.subplot(2,2,2)
plt.plot(hist_full)
# 均匀变暗直方图
hist_full = cv2.calcHist([res1], [0], None, [256], [0, 256])
plt.subplot(2,2,3)
plt.plot(hist_full)
# 区间变亮直方图
hist_full = cv2.calcHist([res3], [0], None, [256], [0, 256])
plt.subplot(2,2,4)
plt.plot(hist_full)
plt.show()
tmp = np.hstack((img, res, res1, res3)) # 四张图片横向合并（便于对比显示）
cv2.imshow('image', tmp)
cv2.waitKey(0)
